package com.lp.chapter001.util;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * v通用返回工具
 * @author LP
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResultData<T> {
    /** 请求是否成功 */
    private boolean result;
    /** 状态码 0 表示成功 */
    private String code;
    /** 描述 */
    private String msg;
    /** 数据 */
    private T data;

    /**
     * 成功 - 没有返回数据
     */
    public static <T> ResultData<T> success() {
        return new ResultData<>(true, "0000", "操作成功", null);
    }


    /**
     * 成功 - 有返回数据
     */
    public static <T> ResultData<T> success(T data) {
        return new ResultData<>(true, "0000", "操作成功", data);
    }

    /**
     * 失败 - 默认错误信息
     */
    public static <T> ResultData<T> fail() {
        return new ResultData<>(false, "9999", "操作失败", null);
    }

    /**
     * 失败 - 默认错误信息
     */
    public static <T> ResultData<T> fail(String msg) {
        return new ResultData<>(false, "9999", msg, null);
    }

    /**
     * 失败 - 自定义错误信息
     */
    public static <T> ResultData<T> fail(String code, String msg) {
        return new ResultData<>(false, code, msg, null);
    }

}
